// pages/cnode/cnode.js
Page({

    /**
     * 页面的初始数据
     */
    data: {
        tabs:[{name:'全部',tab:'all'},{name:'精华',tab:'good'},{name:'分享',tab:'share'},{name:'问答',tab:'ask'},{name:'招聘',tab:'job'}],
        tab:'all',//用来保存点击的tab
        list:[],//接受请求过来的数据
        page:1,//默认当前页是第一页
        isRequest:false,//这个变量用来表示你的请求是否在请求中 false 表示不在请求中
    },
    // 跳转详情
    goDetail(e){
        console.log(e);
        let {id} = e.currentTarget.dataset
        wx.navigateTo({
        //   url: '../ndetail/ndetail?id='+id,
           url:`../ndetail/ndetail?id=${id}`
        })


    },
    // 点击tab事件
    tabClick(e){
        console.log(e);
        let {tab} = e.currentTarget.dataset
        this.setData({
            tab:tab
        })
        // 当点击按钮的时候 page的值重置为1
        this.data.page = 1
        // 每次点击按钮都要调用请求 只是传的tab参数不一样
        this.getTops('tab')

    },
    // 获取列表的请求方法
    getTops(type){ //type 就是形参 来接受 调用时候传过来的实参
        // 一旦调用这个方法请求就在请求中
        this.data.isRequest = true
        // 请求之前添加动画
        wx.showLoading({
          title: '努力加载中...',
        })
        // 发送网络请求
        wx.request({
            // get请求 一般参数都是拼接的形式
          url: 'https://cnodejs.org/api/v1/topics?tab='+this.data.tab+"&page="+this.data.page,
          success:(res)=>{
              console.log(res.data.data);
            //   把之前的数据和当前请求ed数据拼接到一起 
            //  数组的拼接
            // let arr = [...this.data.list,...res.data.data]
            if(type === 'tab'){
                // 不接连数据
                this.setData({
                    list:res.data.data
                })
            }else if(type === 'more'){
                // 连接数据
                this.setData({
                    list:[...this.data.list,...res.data.data]
                })
            }else{
                // console.log(type);type是一个函数  type加 ()是调用函数
                type()
            }
            // 请求结束 关闭动画
            wx.hideLoading()
            // 请求结束 
            this.data.isRequest = false
             
          }
        })
    },
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        let arr = [1,2,3]
        let arr1 = [4,5,6]
        let arr2 = [7,8,9]
        // concat 可以把多个数据连接成一个数组 返回值是连接后的新数组
        // let newArr = arr.concat(arr1,arr2)
        // console.log(newArr);
        let newArr = [...arr,...arr1,...arr2]
        console.log(newArr);
        this.getTops('tab')
    
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {
        console.log('下拉了');
        // 因为更新的新的内容 在最上面显示 所以 重置第一页
        this.data.page = 1
        this.getTops(()=>{
            // 停止下拉的方法
            wx.stopPullDownRefresh()
        })
    },
    /**
     * 页面上拉触底事件的处理函数
     */
    // 上拉触底的事件
    onReachBottom() {
       console.log('到底了');
    //    只有上一个请求不在请求中的 才去请求下一页
       if(!this.data.isRequest){
            //    触底加载下一页  让page++
            this.data.page++
            this.setData({
                page:this.data.page
            })
            this.getTops('more')
       }
   
       
    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    }
})